package com.zyp.shop.service.impl;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zyp.shop.dao.UserDAO;
import com.zyp.shop.entity.User;
import com.zyp.shop.service.UserService;
import com.zyp.shop.util.WebUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;


/**
 * Created by Intellij IDEA
 *
 * @author 赵雅璞
 * @Date: 2022/11/17 18:07
 * @Version 1.0
 */
@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDAO userDAO;

    @Override
    public User selectByEmailAndPassword(String email, String password) {
        // 使用了 mybatis plus 中的方法 mybatis plus 这种 将基本上的单表操作都已经 已经帮我们完成了 我们只要会调用就可以
        // 下面这个查询方法 就是 查询单行 使用一个 查询的wrapper 他会根据参数 来完成我们想要的 结果
        User user = userDAO.selectOne(new QueryWrapper<User>().eq("u_email", email).eq("u_password", password));
        if (user!=null){
            HttpSession session = WebUtil.getSession();
            session.setAttribute("user",user);
            return user;
        }else return null;

    }

    @Override
    public int insert(User user) {
        // MB的修改
        return userDAO.insert(user);
    }

    @Override
    public int update(User user) {
        if (user.getUId()!=0){
            return userDAO.updateById(user);
        }else {
            User vo = (User) WebUtil.getSession().getAttribute("user");
            user.setUId(vo.getUId());
            return userDAO.updateById(user);
        }
    }

    @Override
    public int deleteById(Integer id) {
        return userDAO.deleteById(id);
    }

    @Override
    public List<User> selectAll() {
        List<User> users = userDAO.selectList(new QueryWrapper<>());
        System.out.println(users);
        return users;
    }
}
